/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;
import java.util.Properties;
import java.util.logging.Level;
import java.util.logging.Logger;
import mundo.Punto;
import mundo.Malla;
import mundo.Cruce;
import mundo.Tramo;
/**
 *
 * @author cesarfgt
 */
public class ConstructorMundo {
    public static void main(String[] args) {
        try {
            
            Properties propiedades = new Properties();
            propiedades.load( new FileInputStream( "..//configuracion.properties" ) );
            
            String idMundo  = propiedades.getProperty( "ID_MUNDO" );
            String path     = propiedades.getProperty( "PATH" );
            
            Malla mundo = new Malla();
            if(idMundo.equals( "1" ) ){
                /*
                 *  C1                    
                 *             C4
                 *  t1         t6             
                 * 
                 *  C2   t4    C5   t7    C7          t8         C10
                 * 
                 *  t2         t5         t10 
                 *                        C8    t9    C9
                 *  C3   t3    C6         
                 *  
                 */
                Cruce C1 = new Cruce(new Punto(1, 1), new Punto(2, 2));
                Cruce C2 = new Cruce(new Punto(1, 7), new Punto(2, 8));
                Cruce C3 = new Cruce(new Punto(1, 14), new Punto(2, 15));
                Cruce C4 = new Cruce(new Punto(11, 3), new Punto(12,4));
                Cruce C5 = new Cruce(new Punto(11, 7), new Punto(12, 8));
                Cruce C6 = new Cruce(new Punto(11, 14), new Punto(12, 15));
                Cruce C7 = new Cruce(new Punto(19, 7), new Punto(20, 8));
                Cruce C8 = new Cruce(new Punto(19, 12), new Punto(20, 13));
                Cruce C9 = new Cruce(new Punto(26, 12), new Punto(27, 13));
                Cruce C10 = new Cruce(new Punto(30, 7), new Punto(31, 8));
                Tramo T1 = new Tramo(C1, C2, Tramo.UNIDIRECCIONAL);
                Tramo T2 = new Tramo(C2, C3, Tramo.UNIDIRECCIONAL);
                Tramo T3 = new Tramo(C3, C6, Tramo.UNIDIRECCIONAL);
                Tramo T4 = new Tramo(C2, C5, Tramo.UNIDIRECCIONAL);
                Tramo T5 = new Tramo(C5, C6, Tramo.UNIDIRECCIONAL_INVERTIDA);
                Tramo T6 = new Tramo(C4, C5, Tramo.UNIDIRECCIONAL);
                Tramo T7 = new Tramo(C5, C7, Tramo.UNIDIRECCIONAL);
                Tramo T8 = new Tramo(C7, C10, Tramo.UNIDIRECCIONAL);
                Tramo T9 = new Tramo(C8, C9, Tramo.UNIDIRECCIONAL);
                Tramo T10 = new Tramo(C7, C8, Tramo.UNIDIRECCIONAL);
                mundo.addCruce(C1);
                mundo.addCruce(C2);
                mundo.addCruce(C3);
                mundo.addCruce(C4);
                mundo.addCruce(C5);
                mundo.addCruce(C6);
                mundo.addCruce(C7);
                mundo.addCruce(C8);
                mundo.addCruce(C9);
                mundo.addCruce(C10);
                
                mundo.addTramo(T1);
                mundo.addTramo(T2);
                mundo.addTramo(T3);
                mundo.addTramo(T4);
                mundo.addTramo(T5);
                mundo.addTramo(T6);
                mundo.addTramo(T7);
                mundo.addTramo(T8);
                mundo.addTramo(T9);
                mundo.addTramo(T10);
            } 
            if(idMundo.equals( "2" ) ){
                /*
                 *  C1   t1    C2         C6
                 * 
                 *             t2         t5
                 * 
                 *  C4   t4    C3   t3    C5
                 * 
                 *  t6
                 * 
                 *  C7         t7         C8
                 *  
                 */
               
                Cruce C1 = new Cruce(new Punto(1, 1), new Punto(2, 2));
                Cruce C2 = new Cruce(new Punto(9, 1), new Punto(10, 2));
                Cruce C3 = new Cruce(new Punto(9, 7), new Punto(10, 8));
                Cruce C4 = new Cruce(new Punto(1, 7), new Punto(2,8));
                Cruce C5 = new Cruce(new Punto(18, 7), new Punto(19, 8));
                Cruce C6 = new Cruce(new Punto(18, 1), new Punto(19, 2));
                Cruce C7 = new Cruce(new Punto(1, 12), new Punto(2, 13));
                Cruce C8 = new Cruce(new Punto(18, 12), new Punto(19, 13));
                
                Tramo T1 = new Tramo(C1, C2, Tramo.UNIDIRECCIONAL);
                Tramo T2 = new Tramo(C2, C3, Tramo.UNIDIRECCIONAL);
                Tramo T3 = new Tramo(C3, C5, Tramo.UNIDIRECCIONAL);
                Tramo T4 = new Tramo(C4, C3, Tramo.UNIDIRECCIONAL);
                Tramo T5 = new Tramo(C6, C5, Tramo.UNIDIRECCIONAL_INVERTIDA);
                Tramo T6 = new Tramo(C4, C7, Tramo.UNIDIRECCIONAL);
                Tramo T7 = new Tramo(C7, C8, Tramo.UNIDIRECCIONAL);
                Tramo T8 = new Tramo(C5, C8, Tramo.UNIDIRECCIONAL);
                Tramo T9 = new Tramo(C1, C4, Tramo.UNIDIRECCIONAL);
                mundo.addCruce(C1);
                mundo.addCruce(C2);
                mundo.addCruce(C3);
                mundo.addCruce(C4);
                mundo.addCruce(C5);
                mundo.addCruce(C6);
                mundo.addCruce(C7);
                mundo.addCruce(C8);
                
                mundo.addTramo(T1);
                mundo.addTramo(T2);
                mundo.addTramo(T3);
                mundo.addTramo(T4);
                mundo.addTramo(T5);
                mundo.addTramo(T6);
                mundo.addTramo(T7);
                mundo.addTramo(T8);
                 mundo.addTramo(T9);
            } 
            if(idMundo.equals( "3" ) ){
                
                /*
                 *  C1         C2    t6   C6
                 * 
                 *  t1         t7         t5
                 * 
                 *  C4    t8   C3    t9   C5
                 * 
                 *  t2                    t4
                 * 
                 *  C7         t3         C8
                 *  
                 */
               
                Cruce C1 = new Cruce(new Punto(1, 1), new Punto(2, 2));
                Cruce C2 = new Cruce(new Punto(9, 1), new Punto(10, 2));
                Cruce C3 = new Cruce(new Punto(9, 7), new Punto(10, 8));
                Cruce C4 = new Cruce(new Punto(1, 7), new Punto(2,8));
                Cruce C5 = new Cruce(new Punto(18, 7), new Punto(19, 8));
                Cruce C6 = new Cruce(new Punto(18, 1), new Punto(19, 2));
                Cruce C7 = new Cruce(new Punto(1, 12), new Punto(2, 13));
                Cruce C8 = new Cruce(new Punto(18, 12), new Punto(19, 13));
                
                Tramo T1 = new Tramo(C1, C4, Tramo.UNIDIRECCIONAL);
                Tramo T2 = new Tramo(C4, C7, Tramo.UNIDIRECCIONAL);
                Tramo T3 = new Tramo(C7, C8, Tramo.UNIDIRECCIONAL);
                Tramo T4 = new Tramo(C5, C8, Tramo.UNIDIRECCIONAL);
                Tramo T5 = new Tramo(C6, C5, Tramo.UNIDIRECCIONAL_INVERTIDA);
                Tramo T6 = new Tramo(C2, C6, Tramo.UNIDIRECCIONAL);
                Tramo T7 = new Tramo(C2, C3, Tramo.UNIDIRECCIONAL);
                Tramo T8 = new Tramo(C4, C3, Tramo.UNIDIRECCIONAL);
                Tramo T9 = new Tramo(C3, C5, Tramo.UNIDIRECCIONAL);
                
                mundo.addCruce(C1);
                mundo.addCruce(C2);
                mundo.addCruce(C3);
                mundo.addCruce(C4);
                mundo.addCruce(C5);
                mundo.addCruce(C6);
                mundo.addCruce(C7);
                mundo.addCruce(C8);
                
                mundo.addTramo(T1);
                mundo.addTramo(T2);
                mundo.addTramo(T3);
                mundo.addTramo(T4);
                mundo.addTramo(T5);
                mundo.addTramo(T6);
                mundo.addTramo(T7);
                mundo.addTramo(T8);
                mundo.addTramo(T9);
            } 
            if(idMundo.equals( "4" ) ){
                
                /*
                 *  C1    t1   C2    t2   C6
                 * 
                 *                        t3
                 * 
                 *  C4    t7   C3   t8    C5
                 * 
                 *  t6                    t4
                 * 
                 *  C7         t5         C8
                 *  
                 */
               
                Cruce C1 = new Cruce(new Punto(1, 1), new Punto(2, 2));
                Cruce C2 = new Cruce(new Punto(9, 1), new Punto(10, 2));
                Cruce C3 = new Cruce(new Punto(9, 7), new Punto(10, 8));
                Cruce C4 = new Cruce(new Punto(1, 7), new Punto(2,8));
                Cruce C5 = new Cruce(new Punto(18, 7), new Punto(19, 8));
                Cruce C6 = new Cruce(new Punto(18, 1), new Punto(19, 2));
                Cruce C7 = new Cruce(new Punto(1, 12), new Punto(2, 13));
                Cruce C8 = new Cruce(new Punto(18, 12), new Punto(19, 13));
                
                Tramo T1 = new Tramo(C1, C2, Tramo.UNIDIRECCIONAL);
                Tramo T2 = new Tramo(C2, C6, Tramo.UNIDIRECCIONAL_INVERTIDA);
                Tramo T3 = new Tramo(C6, C5, Tramo.UNIDIRECCIONAL);
                Tramo T4 = new Tramo(C5, C8, Tramo.UNIDIRECCIONAL);
                Tramo T5 = new Tramo(C7, C8, Tramo.UNIDIRECCIONAL_INVERTIDA);
                Tramo T6 = new Tramo(C4, C7, Tramo.UNIDIRECCIONAL);
                Tramo T7 = new Tramo(C4, C3, Tramo.UNIDIRECCIONAL);
                Tramo T8 = new Tramo(C3, C5, Tramo.UNIDIRECCIONAL);
                
                mundo.addCruce(C1);
                mundo.addCruce(C2);
                mundo.addCruce(C3);
                mundo.addCruce(C4);
                mundo.addCruce(C5);
                mundo.addCruce(C6);
                mundo.addCruce(C7);
                mundo.addCruce(C8);
                
                mundo.addTramo(T1);
                mundo.addTramo(T2);
                mundo.addTramo(T3);
                mundo.addTramo(T4);
                mundo.addTramo(T5);
                mundo.addTramo(T6);
                mundo.addTramo(T7);
                mundo.addTramo(T8);
            } 
            String nombre = path + idMundo + ".obj";
            try {
                FileOutputStream fos = new FileOutputStream(nombre);
                ObjectOutputStream oos = new ObjectOutputStream(fos);
                oos.writeObject(mundo);
                oos.close();
            } catch (IOException ex) {
            }
        } catch ( IOException ex ) {
            Logger.getLogger( ConstructorMundo.class.getName() ).log( Level.SEVERE, null, ex );
        } 
    }
}
